<?php

/**
 * Permite hacer operaciones con la tabla calle de la base de datos
 * @package simertweb 
 * @subpackage models 
 * @category Administración
 * @author Grecia Espinoza <mrcl2587@gmail.com>
 * @author Juan Maldonado  <jgmaldonadoj@gmail.com>
 * @version 1.0  
 */
class Mcalles extends CI_Model {

    public function __construct() {
        $this->load->database();
        $this->load->model('mhistorico');
    }

    /**
     * Obtiene todos los nombres de las calles
     * @return type array
     */
    function listarCalles() {
        $listacalles = $this->db->get('calle')->result();
        $query2 = $this->db->get('zonaestacionamiento');
        return array_merge((array) $listacalles, (array_merge($query2->result())));
    }

    /**
     * Obtiene una lista de las calles 
     * @return type array
     */
    function callesLista() {
        $this->db->order_by('nombre', 'asc');
        $query = $this->db->get('calle');
        return $query->result();
    }

    /**
     * Obtiene el id de una calle
     * @param type $calle es el nombre de la calle
     * @return type int
     */
    function indice($calle) {
        $this->db->where('nombre', $calle);
        $query = $this->db->get('calle')->row()->idCalle;
        return $query;
    }

    /**
     * Obtiene el nombre de una calle
     * @param type $id es el id de una calle
     * @return type string
     */
    function calle($id) {
        $this->db->where('idCalle', $id);
        $query = $this->db->get('calle')->row()->nombre;
        return $query;
    }

    /**
     * Verifica si el nombre de una calle existe
     * @return boolean
     */
    function validar_calle() {
        $this->db->where('nombre', $_POST['calle']);
        $query = $this->db->get('calle');
        if ($query->num_rows() > 0) {
            return FALSE;
        } else {
            return TRUE;
        }
    }

    /**
     * Guarda el nombre de una calle
     * @param type $calle es el nombre de una calle
     */
    function guardar($calle) {
        $data = array('nombre' => $calle);
        $this->db->insert('calle', $data);
        $this->mhistorico->guardar_acceso($this->indice($calle), "Creación de una calle");
    }

    /**
     * Verifica si una calle se encuentra en una subcalle
     * @param type $calle es el nombre de la calle
     * @return boolean
     */
    function validar_eliminar($calle) {
        $query = $this->listar_calles();
        $idcalle = $this->indice($calle);
        foreach ($query as $value) {
            if ($value->idCalle == $idcalle) {
                return TRUE;
                break;
            }
        }
    }

    /**
     * Elimina una calle
     * @param type $calle
     */
    function eliminar($calle) {
        $this->db->where('nombre', $calle);
        $id = $this->db->get('calle')->row()->idCalle;
        $this->db->delete('calle', array('idCalle' => $id));
        $this->mhistorico->guardar_acceso($id, "Eliminación de una calle");
    }

    /**
     * Obtiene una lista con los nombres de las calles
     * @return type array
     */
    function listar_calles() {
        $query2 = $this->db->get('subcalle')->result();
        foreach ($query2 as $value) {
            $this->db->or_where('idCalle', $value->principal);
            $this->db->or_where('idCalle', $value->secundaria1);
            $this->db->or_where('idCalle', $value->secundaria2);
        }
        $query = $this->db->get('calle');
        return $query->result();
    }

}

?>
